package com.whut.util.concurrent.locks;

/**
 * @author wangzonghe
 * @date 2025/8/8 14:40
 */
public interface Lock {

    /**
     * 非公平锁
     * 获取失败会进行阻塞，加入阻塞队列，直到获取到锁
     */
    void lockUnfair();

    /**
     * 公平锁
     * 获取失败会进行阻塞，加入阻塞队列，直到获取到锁
     */
    void lockFair();

    /**
     * 释放锁
     */
    void unlock();

    /**
     * 尝试获取锁，如果获取失败，则返回false
     *
     * @return 是否成功获取锁
     */
    boolean tryLock();

    /**
     * 不可重入非公平锁
     */
    void unReentrantLockUnFair();

    /**
     * 不可重入公平锁
     */
    void unReentrantLockFair();

}
